﻿using System;
using System.Collections.Generic;
using System.Data;
using App_Code.Conexao;
using App_Code.Interface;
using App_Code.Vo;
using FluorineFx;
namespace App_Code.Retaguarda.BD
{
    [RemotingService]
    public class AutorizacaoProntuarioBD: BdAbstrato<AutorizacaoProtuario>
    {
        public AutorizacaoProntuarioBD(ConfiguradorConexao configurador): base(configurador)
        {
        }

        public override void Adicionar(AutorizacaoProtuario autorizacaoProtuario)
        {
            ComandoSql("[dbo].[ins_TBL_AutorizacaoProntuario]", CommandType.StoredProcedure);
            MontarParametros(autorizacaoProtuario);
            ExecutarComando();
        }

        public override void Atualizar(AutorizacaoProtuario autorizacaoProtuario)
        {
            ComandoSql("[dbo].[atu_TBL_AutorizacaoProtuario]", CommandType.StoredProcedure);
            MontarParametros(autorizacaoProtuario);
            ExecutarComando();
        }

        public override void Excluir(AutorizacaoProtuario autorizacaoProtuario)
        {
            throw new NotImplementedException();
        }

        public override AutorizacaoProtuario Consultar(AutorizacaoProtuario autorizacaoProtuario)
        {
            ComandoSql("[dbo].[cons_TBL_AutorizacaoProntuario]", CommandType.StoredProcedure);
            AdicionarParametroNulo("@UNIDADESAUDE_CODIGO", autorizacaoProtuario.UnidadeSaude.Codigo);
            return MontarObjeto();
        }

        public override List<AutorizacaoProtuario> Listar(AutorizacaoProtuario autorizacaoProtuario)
        {
            ComandoSql("[dbo].[cons_TBL_AutorizacaoProntuario]", CommandType.StoredProcedure);
            AdicionarParametro("@UNIDADESAUDE_CODIGO", autorizacaoProtuario.UnidadeSaude.Codigo );
            return MontarListagem();
        }

        protected override void PreencherObjeto(ref AutorizacaoProtuario autorizacaoProtuario, IDataReader reader)
        {
           if (reader["CODIGO"] != DBNull.Value)
            {
                autorizacaoProtuario.Codigo = (decimal)reader["CODIGO"];

                if (reader["UNIDADE_SAUDE"] != DBNull.Value)
                {
                    var unidade = new UnidadeSaude();
                    unidade.Codigo = (decimal)reader["UNIDADE_SAUDE"];
                    autorizacaoProtuario.UnidadeSaude = unidade;
                }
                if (reader["USUARIO_CODIGO"] != DBNull.Value)
                {
                    var usuario = new Usuario();
                    usuario.Codigo = (decimal)reader["USUARIO_CODIGO"];
                    autorizacaoProtuario.Usuario = usuario;
                }
                if (reader["AUTORIZACAO"] != DBNull.Value)
                {
                    autorizacaoProtuario.Autorizacao = (bool) reader["AUTORIZACAO"];
                }
                
            }
        }

        private void MontarParametros(AutorizacaoProtuario autorizacaoProtuario)
        {
            if (autorizacaoProtuario.Codigo > 0)
            {
                AdicionarParametro("@codigo", autorizacaoProtuario.Codigo); 
            }
            AdicionarParametro("@unidadesaude_codigo", autorizacaoProtuario.UnidadeSaude.Codigo);
            AdicionarParametro("@usuario_codigo", autorizacaoProtuario.Usuario.Codigo);
            AdicionarParametro("@autorizacao", autorizacaoProtuario.Autorizacao);

        }
    }
}
